/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.sx.sx1.lintcode.day717;

/**
 *
 * @author Administrator
 */
public class LC723 {

    static class Solution {

        /**
         * @param n: a number
         * @param d: digit needed to be rorated
         * @return: a number
         */
        public int leftRotate(int n, int d) {
            // write code here
            d = d % 32;
            int[] arr1 = new int[32];
            int idx = 0;
            for (int i = 31; i >= 0; i--) {
                int cur = (n & (1 << i)) == 0 ? 0 : 1;
                arr1[idx++] = cur;
                //System.out.print(cur+" ");
            }

            int[] arr2 = new int[32];
            idx = 0;
            for (int i = d; i < 32; i++) {
                arr2[idx++] = arr1[i];
            }

            for (int i = 0; i < d; i++) {
                arr2[idx++] = arr1[i];
            }

            int ans = 0;

            for (int i = 31; i >= 0; i--) {
                ans += arr2[i] * (int) (Math.pow(2, 31 - i));
            }
            return ans;
        }
    }

    public static void main(String[] args) {
        Solution s = new Solution();
        System.out.println(s.leftRotate(123, 4));
        System.out.println("中国");

    }
}


/*
LintCode-Logo
学习
刷题
题集
群组

内推
VIP
CAT
其他...
搜索题目、标签、题集
邀请有礼
中文
avatar
您有357条未读消息，请及时查看
723 · 左旋转二进制位
算法
中等
通过率
73%
题目
题解6
笔记
讨论25
排名
记录
描述
位旋转 -—— 旋转（或循环移位）是类似于移位的操作, 不同的是一端脱落的那一位会被放回到另一端
在左旋转中, 左端掉下来的那一位会放在右端
假设 n 用 8 位二进制来存. 对 n = 11100101 左旋转 3 位, 得到 n = 00101111 (左移3位, 原先的前3位放在末尾).
如果 n 用 16 位或 32 位二进制来存, 那么对 n (000…11100101)左旋转了之后会变成 (00..0011100101000).
在本问题中, 你可以假设 n 是用 32 位二进制来存的.
给定待旋转的n,和左移的位数d,输出左旋转后的值

【附答案】花高价求来的OpenAI题库，仅限前50份！

微信加sunny【jiuzhang1104】备注【AI】即可领取


样例
样例1

输入: n = 123, d = 4
输出: 1968
解释:
0000,0000,0000,0000,0000,0000,0111,1010  -->  0000,0000,0000,0000,0000,0111,1010,0000
样例2

输入: n = 127, d = 8
输出: 32512
解释:
0000,0000,0000,0000,0000,0000,1111,1111  -->  0000,0000,0000,0000,1111,1111,0000,0000
标签
企业
脸书
相关题目

181
将整数A转换为B
简单

236
交换奇偶二进制位
简单

664
数 1
中等
推荐课程

系统设计 System Design 2022版
数据库、API、GFS、视频流等16大系统设计详解，实战练习拿下面试/晋升“拦路虎”
683/3053
已开启智能提示
发起考试
30 分 00 秒
12345678910
public class Solution {
    /**
     * @param n: a number
     * @param d: digit needed to be rorated
     * @return: a number
 */
 /*
public int leftRotate(int n, int d) {
        // write code here
        }
        }
        控制台
        历史提交

 */
// LC 723 · 左旋转二进制位 medium
